﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.IO;
using haber.classes;
using System.Data.Linq.SqlClient;

namespace haber
{
    public partial class iletisimFuncs : System.Web.UI.Page
    {
        public class meslekgrubulistesi
        {
            public int id { get; set; }
            public string ad { get; set; }

        }
        public class iletisimListesi
        {
            public int id { get; set; }
            public string adi { get; set; }
            public string soyadi { get; set; }
            public string konu { get; set; }
            public string mesaj { get; set; }
            public string meslekgrubu { get; set; }
            public string eposta { get; set; }
            public string ekler { get; set; }
            public string tarih { get; set; }
            public string saat { get; set; }
            public char tip { get; set; }

        }
        [WebMethod]
        public static List<meslekgrubulistesi> meslekGrubuGetir()
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var meslek = from m in dc.MeslekGrubus
                                 select new meslekgrubulistesi { ad = m.MeslekGrubuAdi, id = m.ID };
                    return meslek.ToList();

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Meslek Gruplari Listelenirken : " + ex.Message);
            }
        }

     

        [WebMethod]
        public static void iletisimMesajSil(int id)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var mesaj = from m in dc.iletisims
                                where m.IDS == id
                                select m;
                    if (mesaj.Count() > 0)
                    {
                        var mm = from me in dc.MesajMesleks
                                         where me.MesajID == id
                                         select me;
                        dc.MesajMesleks.DeleteAllOnSubmit(mm);

                        var dd = from d in dc.Detays
                                 where d.iletisimID == id
                                 select d;
                        dc.Detays.DeleteAllOnSubmit(dd);


                        dc.iletisims.DeleteAllOnSubmit(mesaj);
                        dc.SubmitChanges();
                    }

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Meslek Gruplari Listelenirken : " + ex.Message);
            }
        }

        [WebMethod]
        public static void iletisimKaydet(string ad,string soyad,string eposta,string konu,string mesaj,char tip,string ekler,string meslek,char gelengiden,char gonder)
        {
            try
            {
                if (ad == "" || ad == null || soyad == "" || soyad == null || eposta == "" || eposta == null || konu == "" || konu == null || mesaj == "" || mesaj == null)
                {
                    throw new Exception("Tüm alanların doldurulması şarttır.");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    int ids= -1;
                    iletisim i = new iletisim();
                    i.Ad = ad;
                    i.Soyad = soyad;
                    i.Eposta = eposta;
                    i.Konu = konu;
                    i.Mesaj = mesaj;
                    i.GelenGiden = gelengiden;
                    i.Tarih = DateTime.Now;
                    i.Tip = tip;
                    dc.iletisims.InsertOnSubmit(i);
                    dc.SubmitChanges();
                    ids = i.IDS;
                    if (ekler != null)
                    {
                        string[] eks = ekler.Split(',');
                        foreach (var e in eks)
                        {
                            if (e != "")
                            {
                                Detay ide = new Detay();
                                ide.Ek = e;
                                ide.iletisimID = ids;
                                dc.Detays.InsertOnSubmit(ide);
                                dc.SubmitChanges();
                            }
                        }
                       

                    }

                    if (meslek != "")
                    {
                        string[] mes = meslek.Split(',');
                        foreach (var m in mes)
                        {
                            if (m != "")
                            {
                                MesajMeslek mm = new MesajMeslek();
                                mm.MesajID = ids;
                                mm.MeslekGrubu = int.Parse(m);
                                dc.MesajMesleks.InsertOnSubmit(mm);
                                dc.SubmitChanges();
                            }
                        }
                    }
                    
                    adresDefterineKaydet(ids);
                    if (gonder == 'T')
                    {
                        try
                        {
                            statics.mailGonder(eposta, konu, mesaj);
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void adresDefterineKaydet(int iletisimID)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var iletisim = from i in dc.iletisims
                                   where i.IDS == iletisimID
                                   select i;
                    if (iletisim.Count()> 0){
                        iletisim il = iletisim.First();
                        var adres = from a in dc.AdresDefteris
                                    where a.eposta == il.Eposta
                                    select a;
                        if (adres.Count() == 0)
                        {
                            AdresDefteri adef = new AdresDefteri();
                            adef.ad = il.Ad;
                            adef.soyad = il.Soyad;
                            adef.eposta = il.Eposta;
                            dc.AdresDefteris.InsertOnSubmit(adef);
                            dc.SubmitChanges();
                            List<MesajMeslek> mml = iletisim.First().MesajMesleks.ToList() ;
                            if (mml.Count() > 0)
                            {
                                foreach (var i in mml)
                                {
                                    AdresDefteriMeslek am = new AdresDefteriMeslek();
                                    am.MeslekID = i.MeslekGrubu;
                                    am.AdresID = adef.id;
                                    dc.AdresDefteriMesleks.InsertOnSubmit(am);
                                    dc.SubmitChanges();
                                }

                            }
                            
                        }

                    }
                    
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Adres Defteri Kayıt Yapılırken : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<iletisimListesi> iletisimListesiGetir(char gelengiden,char siralama,char tip,string meslekgruplari)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    string[] mg = meslekgruplari.Split(',');
                    //string[] grup = gruplar.Split(',');
                    //var gruplars = from g in dc.Grups
                    //              select g.id.ToString();
                    //if (gruplar == "")
                    //{
                    //    grup = gruplars.ToArray();
                    //}


                    var il = from i in dc.iletisims
                                 join m in dc.MesajMesleks on i.IDS equals m.MesajID
                                 where i.GelenGiden == gelengiden && mg.Contains(m.MeslekGrubu.ToString())
                                 select new iletisimListesi { adi = i.Ad, soyadi = i.Soyad, konu = i.Konu, id = i.IDS, eposta = i.Eposta, tarih = i.Tarih.ToShortDateString(), saat = i.Tarih.ToShortTimeString(),tip = i.Tip };
                    if (meslekgruplari == "")
                    {
                        il = from i in dc.iletisims                               
                               where i.GelenGiden == gelengiden
                             select new iletisimListesi { adi = i.Ad, soyadi = i.Soyad, konu = i.Konu, id = i.IDS, eposta = i.Eposta, tarih = i.Tarih.ToShortDateString(), saat = i.Tarih.ToShortTimeString(), tip = i.Tip };
                    }

                    if (il.Count() > 0)
                    {
                      //  List<iletisimListesi> li = il.ToList();
                        
               
                        iletisimListesi[] ilarr = il.ToArray();
                        if (tip != 'H')
                        {
                           ilarr =   ilarr.Where(t => t.tip == tip).ToArray();
                        }
                        for (int i = 0; i < ilarr.Count() ; i++)
                        {
                            string meslekGruplari;
                            var mesleks = from m in dc.MesajMesleks
                                          where m.MesajID == ilarr[i].id
                                          select m.MeslekGrubu1.MeslekGrubuAdi;
                            if (mesleks.Count() > 0)
                            {
                                meslekGruplari = String.Join(",", mesleks.ToArray());
                                ilarr[i].meslekgrubu = meslekGruplari;
                            }
                            string ekler;
                            var eks = from e in dc.Detays
                                      where e.iletisimID == ilarr[i].id
                                      select e.Ek;
                            if (eks.Count() > 0)
                            {
                                ekler = String.Join(",", eks.ToArray());
                                ilarr[i].ekler = ekler;
                            }
                        }
                        if (siralama == 'T')
                        {
                            return ilarr.OrderByDescending(t=>t.tarih).ToList();
                        }
                        else if (siralama == 'A')
                        {
                            return ilarr.OrderBy(t => t.adi).ToList();

                        }
                        else
                        {
                            return ilarr.OrderBy(t => t.soyadi).ToList();
                        }
                        


                    }
                    else
                    {
                        return null;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("İletişim Listesi : " + ex.Message);
            }
        }

        [WebMethod]
        public static string iletisimMesajGetir(int id)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var il = from i in dc.iletisims
                             where i.IDS == id
                             select i.Mesaj;

                    if (il.Count() > 0)
                    {
                        
                        
                        return il.First();


                    }
                    else
                    {
                        return null;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("İletişim Listesi Mesajı : " + ex.Message);
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

    }
}